#ifndef ERRORQUEUEMANAGER_H
#define ERRORQUEUEMANAGER_H

#include <QObject>
#include <QQueue>
#include <QMap>
#include <QTimer>
#include "toast.h"

class ErrorQueueManager : public QObject
{
    Q_OBJECT

public:
    explicit ErrorQueueManager(QWidget* parent = nullptr);

    // 添加错误到队列
    void addError(const QString& fieldId, const QString& errorMessage);

    // 移除特定字段的错误
    void removeError(const QString& fieldId);

    // 清除所有错误
    void clearAllErrors();

    // 检查是否有错误
    bool hasErrors() const;

    // 获取当前错误数量
    int errorCount() const;


private slots:
    // 显示队列中的下一个错误
    void showNextError();

    // 当前Toast显示完成后的回调
    void onToastFinished();

private:
    struct ErrorInfo {
        QString fieldId;
        QString message;
    };

    QQueue<ErrorInfo> m_errorQueue;           // 错误队列
    QMap<QString, ErrorInfo> m_activeErrors;  // 当前活动的错误（按字段ID索引）
    QWidget* m_parentWidget;
    bool m_isShowingError;                    // 是否正在显示错误
    QTimer m_retryTimer;                      // 重试定时器

    // 检查并显示下一个错误
    void checkAndShowNextError();
};

#endif // ERRORQUEUEMANAGER_H
